iT邦幫忙

2026 iThome 鐵人賽

DAY 3
0
Security

Like an Exploition:IoT 韌體漏洞鍊成術系列 第 3

【𝕯𝖆𝖞 𝟑】My First IoT

  • 分享至 

  • xImage
  •  

前言

今天我們將討論 Firmware 的取得管道以及如何選擇適合自己的目標。雖然筆者到現在也還在摸索中,但希望可以分享之前踩過的幾個小坑避雷><

0x00 開啟 IoT 研究的偉大航道

再開始前想先談談關於目標選擇,很推薦可以看看 DEVCORE 資深研究員 NiNi(@terrynini38514)在2025年 SITCON 以及同年的 AIS3 營隊課程中的演講:獨自升級的駭客:自由之路從框架開始
Blog 內文

Yes

其中很私以為可以仔細去重新思考的部分是關於"目標導向的學習",同時也是本篇鐵人賽真正想要嘗試的方向。比起通讀基礎理論,實際的 Get your hands dirty 、在實踐目標的過程不斷嘗試與挫折才是最快的學習方法。

延伸閱讀與心靈雞湯(?)

細談目標選擇

首先,作為一個好像什麼都會一點但什麼都不太會的新手,選擇一個太新、又加密又 RTOS 的設備作為起始似乎太過不切實際,因此可以先從有參考資料/前人軌跡的方向開始著手,比如被打爛的路由器和 NAS 設備,經典會成為經典有其原因。或是簡單一點,看看你家有些什麼?

再往細分析的話:

  1. 過往 CVE 數量與相關研究文章:可以搜尋設備名稱和 CVE 等關鍵字或是看看 DEFCON / BlackHat USA / Re//verse 等大會上的相關研究目標進行參考,不過剛開始可以網路上找的到POC或是相關技術細節的文章作為參考
  2. 硬體可得性:可以輕易得手或是較便宜的設備都不錯,畢竟誰知道你會在過程中打壞幾台
  3. 模擬難度:幾個大廠的韌體有些都可以透過 QEMU 甚至是 emulation script 進行直接模擬,在還沒有硬體的初期會是很好的起始方向
  4. (?) 有相關漏洞通報管道的設備,但這點現在不一定成立,大 Agent 時代大家都在撞洞嗚嗚,而且 Bounty 通常是最新的設備,新手期可以先從其他門檻低一些的開始
  5. 開源韌體(中期/白箱):可以看看 OpenWrtDD-WRTTomamto 等開源韌體也是很不錯的熟悉分析流程的方法
  6. 資安院漏洞計畫 今年的才剛開始,可以報名試試看。不過有點通靈有些服務也經常掛掉有一定挑戰性

0x01 Let's Get It Started

選定標的後的下一步是蒐集資料,除了上網搜尋過往CVE之外,拿到韌體也很重要,但現實是不一定可以輕易取得這類資料,搜尋 IoT設備的名稱和firmware 等關鍵字後就跟抽卡一樣,會遇到以下情況:

ㄅ級分 - 官網載點

部分廠商會在官網提供 Firmware 載點,可以直接選定對應的版本下載到對應的韌體,給到ㄅ級分,OSINT 時間 -100

常見的廠商,如 TP-Link、ASUS、Synology 等都可以從官網中找到,下載到 .bin.img.trx.deb 等壓縮韌體檔案

ㄆ級分 - Firmware Archive

雖然官網沒有,但許多韌體備份資料庫或是 github repo 中有機率搜到對應的版本內容,但也需要重複驗證hash跟內容完整性,給到ㄆ級分

參考ref:firmware.center

ㄇ級分 - 考古

有些廠商僅會放上最新版本的韌體,因此可以透過 Internet Archive 等 web archive 坐時光機回到曾經的版本。

ㄦ級分 - OSINT大失敗

當其他方法都找不到的時候,會進入痛苦硬體時
間,可以透過不同的硬體介面與工具取得裝置中的 Firmware Image 或 Memory Dump,嘗試在裝置啟動或 Debug 模式下將韌體內容讀出。
但機率性把設備戳壞或是小失敗

回憶 day2 中提到的韌體外接實體介面,可以透過貴貴的硬體debug工具去嘗試是否有預設未關閉的服務可以進行讀取

  • UART Dump:最常見且相對容易嘗試的方法之一。沒有確實關閉 bootloader 讀取功能的硬體,可以透過一顆 USB-TTL 轉接器將設備電路板上的 UART 接口外接,在 Bootloader 階段將記憶體內容 dump 出。[3]

  • JTAG:透過沒有關閉的 JTAG debug port 直接存取 CPU 內,可以整片 dump flash,也能做 runtime debugging。通常會先找到 JTAG 接口(Jtagulator進行自動枚舉和互動交互很方便)

    (Jtagulator debugging[4])

  • SPI Flash 讀取:如果韌體儲存在外部 SPI NOR Flash,可以繞過 CPU,直接使用 Flash Programmer(e.g., CH341A)讀取 Flash Image。

實際操作時,還需要確認電壓、Pin 定義以及裝置是否啟用了 Debug Lock、Readout Protection 或其他安全機制。
具體更多的操作步驟與工具細節留到 Day 5 再進一步展開。

備註

  • 除了下載完檢查checksum外,有些中國製 IoT 設備也會區分 "中國版" 與 "國際版",編號、試用版本和韌體內部實作細節也會不太一樣,裝錯版本的話可能會開不了機或是壞掉。 e.g., 米家 App、Tenda
  • 最近發現 grok 的內建資訊蒐集能力完勝A社和O社,真的找不到神奇載點的時候或許會有奇效

To Be Continue

明天會來介紹拿到韌體後的第一個DLC:加密韌體和錯置的檔案系統

References

[1]Firmware Analysis Toolkit
[2]IoT Security 101
[3]https://xpart.org/product/usb-to-ttl-converter-usb-to-uart-module/
[4]https://www.seeleypentecost.com/posts/2020-08-21-building-a-jtagulator/


上一篇
【𝕯𝖆𝖞 𝟐】Firmware101:從 Bootloader 到 RootFS
系列文
Like an Exploition:IoT 韌體漏洞鍊成術3
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言